In designing a product system, whether it be a computer system or other systems such as an aircraft, a ship, a missile, etc., incomplete product system design specifications can lead to serious problems that do not manifest themselves until very late in the product system development cycle—when the costs to repair such problems can be astronomical. Model-driven design techniques can expose design flaws early in the product system development cycle and minimize the cost of design change.
Invariably, multiple models are needed to comprehensively model all aspects of a product system under design, encompassing system structure and behavior, and possibly other aspects such as cost. However, general-purpose modeling languages lack the semantic precision required to model all aspects of a system. In order to capture domain-specific semantics, these general-purpose modeling languages may be extended with domain-specific extensions (e.g., the UML profile for Modeling and Analysis of Real-time and Embedded systems). Alternately, one could use Domain Specific Modeling Languages (DSMLs) that offer capabilities needed for the specific purpose—e.g., use MATLAB® for mathematical models or Simulink® for simulation models. In either case, no single modeling language can be rich enough to capture all aspects of a system under design.
Therefore, there is a need for model-centric systems engineering and development that does not require or depend on the existence of a single all-encompassing general-purpose model language. Multi-modeling, the use of multiple models, appears to be a better approach; however, the use of multiple models that deal with diverse aspects of the system under design presents several challenges such as data and semantic consistency.